package com.codechen.scaffold.news.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "news", autoResultMap = true)
public class News implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 *
	 */
	@TableId(type = IdType.ASSIGN_ID)
	private Integer id;
	/**
	 * 新闻标题
	 */
	private String title;
	/**
	 * 文章别名(SEO友好URL)
	 */
	private String slug;
	/**
	 * 新闻摘要
	 */
	private String summary;
	/**
	 * 新闻内容
	 */
	private String content;
	/**
	 * 封面图片URL
	 */
	private String coverImage;
	/**
	 * 视频链接
	 */
	private String videoUrl;
	/**
	 * 分类ID
	 */
	private Integer categoryId;
	/**
	 * 作者ID(管理员ID)
	 */
	private Long authorId;
	/**
	 * 作者姓名
	 */
	private String authorName;
	/**
	 * 标签(JSON格式存储)
	 */
	@TableField(typeHandler = JacksonTypeHandler.class)
	private List<String> tags;
	/**
	 * 状态：草稿/已发布/已归档
	 */
	private String status;
	/**
	 * 是否为推荐新闻(轮播图)
	 */
	private Boolean isFeatured;
	/**
	 * 是否置顶
	 */
	private Boolean isTop;
	/**
	 * 浏览量
	 */
	private Integer viewCount;
	/**
	 * 点赞数
	 */
	private Integer likeCount;
	/**
	 * 评论数
	 */
	private Integer commentCount;
	/**
	 * 发布时间
	 */
	private Date publishTime;
	/**
	 * 创建时间
	 */
	private Date createTime;
	/**
	 * 更新时间
	 */
	private Date updateTime;
}